import Vue from "vue"
import App from "./App"
import uView from 'uview-ui';
import appletLogin from "./components/appletLogin/appletLogin.vue"
Vue.component("apptet-login", appletLogin)
Vue.use(uView);
import {
    getGlobalData,
    setGlobalData,
    request,
    onAlipayTo,
    errHandler,
    checkIsPageLessParameter,
    fileUploadHandler,
    getUserId,
    delGlobalData,
    postDataGuard,
    uiStr,
    getPageParams
} from "./utils/index.js"
import {
    APP_NAME,
    APP_APPID,
    APP_NAME_DICT,
    baseHost
} from './utils/constant.js'
import {
    router,
    RouterMount
} from "./router.js" // LOG: 使用了uni-simple-router插件，关于这个插件的更多使用文档，可参考: https://hhyang.cn/v2/start/introduction.html
import {
    showBtns
} from "./components/orderItem/orderActionBtns/utils/checkShowBtn"
import {
    eventBus
} from "./utils/eventPublishSubscribe"

// import Vue from 'vue'
// 创建事件总线   就相当于创建了一个新的vue实例
const bus = new Vue()
// 把bus挂载到了Vue的原型上, 保证所有的组件都能通过 this.$bus访问到事件总线



export const goLogin = function() {
    console.log('goLogin', getUserId(), APP_NAME);
    if (!getUserId()) {
        uni.navigateTo({
            url: `/pagesOther/phone_login/phone_login`,
        })
        return false;
    } else {
        // uni.showToast({
        // 	icon: 'none',
        // 	title: '已登录'
        // });
    }
};



Vue.prototype.$qrCoded = new Promise(resolve => {
    Vue.prototype.$qrCodeResolve = resolve
})


Vue.prototype.$bus = bus
Vue.config.productionTip = false
Vue.prototype.$appName = APP_NAME
Vue.prototype.$appNameDict = APP_NAME_DICT
Vue.prototype.$baseHost = baseHost
Vue.prototype.$request = request
Vue.prototype.$goLogin = goLogin
Vue.prototype.$getGlobalData = getGlobalData
Vue.prototype.$setGlobalData = setGlobalData
Vue.prototype.$delGlobalData = delGlobalData
Vue.prototype.$onTo = onAlipayTo
Vue.prototype.$errHandler = errHandler
Vue.prototype.$orderModuleShowActionBtn = showBtns // 订单模块按钮的显示与否都会使用到，与其不断引入，不如挂载到全局实例上面
Vue.prototype.$checkIsPageLessParameter =
    checkIsPageLessParameter // 检查页面是否缺少了关键参数，比如说从订单列表页面点击进入订单详情页面，上个页面会传个订单ID下去，缺少这个关键数据的话，整个页面都是不可用的
Vue.prototype.$fileUploadHandler = fileUploadHandler
Vue.prototype.$getUid = getUserId // 使用挺频繁的，挂载全局，避免每次引入
Vue.prototype.$eventEmitter = eventBus
Vue.prototype.$postDataGuard = postDataGuard
Vue.prototype.$uiStr = uiStr
Vue.prototype.$getPageParams = getPageParams

// 混入全局
const mixins = {
    data() {
        return {
            APP_NAME,
            APP_APPID,
            APP_NAME_DICT,
            themeColor: ''
        }
    },
    mounted() {
        // #ifdef H5 || APP-PLUS
        this.getThemeColor();
        const pages = getCurrentPages()
        const page = pages[pages.length - 1]
        if (page) {
            const pageTitle = page.$holder.navigationBar.titleText;
            if (!pageTitle) {
                uni.setNavigationBarTitle({
                    title: APP_NAME_DICT[APP_NAME]
                })
            }
        }
        // #endif

    },
    methods: {
        getThemeColor() {
            uni.getStorage({
                key: 'themeColor',
                success: (res) => {
                    this.themeColor = res.data;
                }
            });
        },
    }
}
Vue.mixin(mixins)

// Vue.use(router)
App.mpType = "app"
const app = new Vue({
    ...App
})
//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
// #ifdef H5
app.$mount() //为了兼容小程序及app端必须这样写才有效果
// RouterMount(app, router, "#app")
// #endif
// #ifndef H5
app.$mount() //为了兼容小程序及app端必须这样写才有效果
// #endif